約 3,233,023 件
https://w.atwiki.jp/oomorikai/pages/16.html
oomoriとは 本名は大盛卍ノ助 獄中で生まれ実家はノーパンしゃぶしゃぶ屋であったため毎日カニしゃぶを食べて育った 弟は失踪中で弟の名前はしゃぶたろうである 親父は毎晩鷹の頭蓋骨で酒を飲み逆恨みした鷹が弟をさらい、彼を探すために大戦略を始めた 日々鎖につながれて育ちDVの傷を隠すため馬のガイコツを被って学校に通っていた また父親にシリアに売り飛ばされた過去がありそこでゲリラ部隊を殲滅して帰国した
https://w.atwiki.jp/mcmodserver/pages/12.html
このサーバーで導入しているmodの一覧です。括弧内は一般的な略称となります。それぞれのリンクで解説wikiに飛ぶことができます。*解説しているヴァージョンとして古い可能性がありますのでご注意ください。 mod名 解説リンク 簡易解説 RealTrainMod new! wiki 鉄道mod。幅が3マスある線路、電車などを追加する。本格的な鉄道を作れる BiblioCraft new! 全般的な解説ページなし 家具mod。様々な家具を追加する。独自のGUIを持ち特殊な動作をする物も多い。 MineFactoryReloaded2 http //www26.atwiki.jp/minecraft/pages/991.html 工業系mod、RFを扱う。多様なマシンがあり自動化の幅が広がる。 Buildcraft(BC) http //www26.atwiki.jp/minecraft/pages/189.html 工業系mod、パイプを使った輸送が特徴。 IndustrialCraft² experimental(IC2) http //www26.atwiki.jp/minecraft/pages/1173.html 工業系mod、エネルギーとしてEUを扱う。 EnderIO http //www26.atwiki.jp/minecraft/pages/1164.html 工業系mod、BCと同じRFエネルギーを扱う。エンダーパールを用いる物が多い。 SextiarySector2(SS2) http //www26.atwiki.jp/minecraft/pages/1337.html 汎用系mod、水分、スタミナ、MPなどの新しいステータスの追加、GFエネルギーを扱う。 Tinkers Construct(TinC) http //www26.atwiki.jp/minecraft/pages/1125.html ツール追加系mod、いくつかのパーツを組み合わせてツール、武器を作ると言うもの。 Railcraft(RC) http //www26.atwiki.jp/minecraft/pages/377.html トロッコや線路を多く追加するmod。輸送が捗る。 Ars Magica2(AM2) http //www26.atwiki.jp/minecraft/pages/1134.html 魔術系mod、自分で魔法を作るというmod。効果や形状を組み合わせる。 ThaumCraft4(TC4) http //www26.atwiki.jp/minecraft/pages/1129.html 魔術系mod。自然に存在する<相>というものを利用し、魔法を行使する。 AncientWarfare2(AW2) http //www26.atwiki.jp/minecraft/pages/1190.html 兵士mod。色々な命令のできるNPCや、攻城兵器などを追加する。マップに砦や城などを追加する。 竹mod http //www26.atwiki.jp/minecraft/pages/645.html 和風mod。竹や桜といった和風なアイテムを追加する。和風な建築にどうぞ。 豆腐craft http //www26.atwiki.jp/minecraft/pages/1103.html 豆腐mod。豆腐を多く追加。またTFという謎エネルギーを追加する。 Metallurgy4 http //www26.atwiki.jp/minecraft/pages/851.html 鉱石mod。多くの鉱石を追加する。それぞれの武器やツールを作れる。 craftguide http //konbu-coupe.sakura.ne.jp/13/modCapture/craftGuide1601/craftGuide/ レシピを閲覧できるアイテムを追加するmod。 黄昏の森 http //www26.atwiki.jp/minecraft/pages/448.html Dimention追加mod。常に夕方という異世界を追加するmod。ダンジョンやボスが多く存在 caveworld wiki Dimention追加mod。地下世界という異世界を追加するmod。地上がなく、最高度から地底まですべてが地下洞窟となっている
https://w.atwiki.jp/r2timer/pages/47.html
特技の判定方法 魔法・特技には宣言と判定のタイミングが指定されています。 行動と書かれている欄に宣言タイミングが記載されています。 能動 行動が能動である特技は、攻撃命中の代わりに使用可能です。 「智則」は行動が能動の特技「闘気燃焼」を使用します 「智則」は攻撃をする代わりに、特技の発動判定を行います 「闘気燃焼」は発動難度10ですので、 「智則」は炎属性Lv+知性修正+2D6で10以上を出す必要があります 自分の行動順番を消費してしまうため、 能動の特技を使用すると攻撃命中など他の特技が使えません。 受動 行動が受動である特技は、回避や受けの代わりに使用可能です。 自分や味方が攻撃を受けたときに宣言できます。 「智則」は行動が受動の特技「体捌き」を使用します 「智則」は受け行動の代わりに特技を使用します この特技に成功すると、受け防御点として2D6をプラスできます 自分の行動順番は消費しません。 能動直前 行動が能動直前である特技は、攻撃命中や能動特技を行う直前に宣言します。 難度欄が空欄の特技は、消費MPやCPを消費するだけで使用可能です。 難度欄に記載のある特技は、能動行動をおこなう直前に特技の発動判定を行います。 判定に失敗した場合、即座に行動を終了します。すなわち、攻撃などの行動ができません。 「まどか」は風属性の特技「風刃剣」を使って攻撃を遠くにとどけようとします 「風刃剣」の難度は8です。「まどか」は風属性Lv+知性修正+2D6で8以上を 出す必要があります。この判定に成功すれば、「まどか」は次に 遠く離れた敵への命中判定を行うことができます。 もし失敗した場合、「まどか」は攻撃することも出来ず、行動を終了してしまいます! 能動直後 行動が能動直後である特技は、
https://w.atwiki.jp/akasatanahama/pages/126.html
概要 村人の職業を追加し、専用の家を村に生成させる。 ソースコード AluminiumMod.java package tutorial.aluminiummod; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.VillagerRegistry; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import net.minecraft.world.gen.structure.MapGenStructureIO; @Mod(modid = "AluminiumMod", name = "Aluminium Mod", version = "1.0.0") public class AluminiumMod { /** * 村人IDの宣言 * 0~4は既存の村人として設定されているため、使ってはいけない */ public static final int metalVillagerID = 334; //追加するアイテム・ブロックの宣言 public static Item aluminium; public static Block oreAluminium; //村人の宣言 @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { //アイテム・ブロックの実装 aluminium = new Item() .setCreativeTab(CreativeTabs.tabMaterials) .setUnlocalizedName("aluminium") .setTextureName("aluminiummod aluminium"); GameRegistry.registerItem(aluminium, "aluminium"); oreAluminium = new AluminiumOre() .setBlockName("oreAluminium") .setBlockTextureName("aluminiummod aluminium_ore"); GameRegistry.registerBlock(oreAluminium, "oreAluminium"); } @Mod.EventHandler public void init(FMLInitializationEvent event) { //村人IDの登録 VillagerRegistry.instance().registerVillagerId(metalVillagerID); //村人の登録 VillagerRegistry.instance().registerVillageTradeHandler(metalVillagerID, new AluminiumTrade()); if (FMLCommonHandler.instance().getSide().isClient()) { VillagerRegistry.instance().registerVillagerSkin(metalVillagerID, new ResourceLocation("aluminiummod textures/mobs/metal_villager.png")); } //村人生成の登録 VillagerRegistry.instance().registerVillageCreationHandler(new AluminiumVillageCreation()); //構造物の登録 MapGenStructureIO.registerStructure(AluminiumHouse.class, "AluminiumHouse"); MapGenStructureIO.func_143031_a(AluminiumHouse.class, "AluminiumHouse_"); } } AluminiumOre.java 鉱石の追加 と同様 AluminiumTrade.java package tutorial.aluminiummod; import cpw.mods.fml.common.registry.VillagerRegistry; import net.minecraft.entity.passive.EntityVillager; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.village.MerchantRecipe; import net.minecraft.village.MerchantRecipeList; import java.util.Random; public class AluminiumTrade implements VillagerRegistry.IVillageTradeHandler { //村人の交換を追加する @Override public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeList recipeList, Random random) { //アルミニウム一個をエメラルド一個と交換する recipeList.add(new MerchantRecipe(new ItemStack(AluminiumMod.aluminium, 1), new ItemStack(Items.emerald, 1))); //アルミニウム鉱石一個とエメラルド二個とアルミニウム一個を交換する recipeList.add(new MerchantRecipe(new ItemStack(AluminiumMod.oreAluminium, 1),new ItemStack(Items.emerald, 1) , new ItemStack(AluminiumMod.aluminium, 1))); } } AluminiumVillageCreation.java package tutorial.aluminiummod; import cpw.mods.fml.common.registry.VillagerRegistry; import net.minecraft.util.MathHelper; import net.minecraft.world.gen.structure.StructureVillagePieces; import java.util.List; import java.util.Random; public class AluminiumVillageCreation implements VillagerRegistry.IVillageCreationHandler { //その村人がどのくらいの頻度で生成されるかを決める @Override public StructureVillagePieces.PieceWeight getVillagePieceWeight(Random random, int i) { return new StructureVillagePieces.PieceWeight(getComponentClass(), 50, MathHelper.getRandomIntegerInRange(random, i, i + 1)); } //建築物のクラスを渡す @Override public Class ? getComponentClass() { return AluminiumHouse.class; } //建築物生成時に呼ばれる @Override public Object buildComponent(StructureVillagePieces.PieceWeight villagePiece, StructureVillagePieces.Start startPiece, List pieces, Random random, int p1, int p2, int p3, int p4, int p5) { return AluminiumHouse.func_74915_a(startPiece, pieces, random, p1, p2, p3, p4, p5); } } AluminiumHouse.java package tutorial.aluminiummod; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraft.world.gen.structure.StructureBoundingBox; import net.minecraft.world.gen.structure.StructureComponent; import net.minecraft.world.gen.structure.StructureVillagePieces; import net.minecraftforge.common.ChestGenHooks; import java.util.List; import java.util.Random; import static net.minecraftforge.common.ChestGenHooks.VILLAGE_BLACKSMITH; public class AluminiumHouse extends StructureVillagePieces.Village { private boolean hasMadeChest; public AluminiumHouse() { } public AluminiumHouse(StructureVillagePieces.Start p_i2103_1_, int p_i2103_2_, Random p_i2103_3_, StructureBoundingBox p_i2103_4_, int p_i2103_5_) { super(p_i2103_1_, p_i2103_2_); this.coordBaseMode = p_i2103_5_; this.boundingBox = p_i2103_4_; } //構造物を生成するメソッド public boolean addComponentParts(World p_74875_1_, Random p_74875_2_, StructureBoundingBox p_74875_3_) { if (this.field_143015_k 0) { this.field_143015_k = this.getAverageGroundLevel(p_74875_1_, p_74875_3_); if (this.field_143015_k 0) { return true; } this.boundingBox.offset(0, this.field_143015_k - this.boundingBox.maxY + 6 - 1, 0); } //ブロックを指定した範囲内に敷き詰める this.fillWithBlocks(p_74875_1_, p_74875_3_, 0, 1, 0, 9, 4, 6, Blocks.air, Blocks.air, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 0, 0, 0, 9, 0, 6, Blocks.cobblestone, Blocks.cobblestone, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 0, 4, 0, 9, 4, 6, Blocks.cobblestone, Blocks.cobblestone, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 0, 5, 0, 9, 5, 6, Blocks.stone_slab, Blocks.stone_slab, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 1, 5, 1, 8, 5, 5, Blocks.air, Blocks.air, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 1, 1, 0, 2, 3, 0, Blocks.iron_block, Blocks.iron_block, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 0, 1, 0, 0, 4, 0, Blocks.log, Blocks.log, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 3, 1, 0, 3, 4, 0, Blocks.log, Blocks.log, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 0, 1, 6, 0, 4, 6, Blocks.log, Blocks.log, false); //指定した相対座標にブロックを設置する this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.iron_block, 0, 3, 3, 1, p_74875_3_); this.fillWithBlocks(p_74875_1_, p_74875_3_, 3, 1, 2, 3, 3, 2, Blocks.iron_block, Blocks.iron_block, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 4, 1, 3, 5, 3, 3, Blocks.iron_block, Blocks.iron_block, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 0, 1, 1, 0, 3, 5, Blocks.iron_block, Blocks.iron_block, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 1, 1, 6, 5, 3, 6, Blocks.iron_block, Blocks.iron_block, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 5, 1, 0, 5, 3, 0, Blocks.fence, Blocks.fence, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 9, 1, 0, 9, 3, 0, Blocks.fence, Blocks.fence, false); this.fillWithBlocks(p_74875_1_, p_74875_3_, 6, 1, 4, 9, 4, 6, Blocks.cobblestone, Blocks.cobblestone, false); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.flowing_lava, 0, 7, 1, 5, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.flowing_lava, 0, 8, 1, 5, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.iron_bars, 0, 9, 2, 5, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.iron_bars, 0, 9, 2, 4, p_74875_3_); this.fillWithBlocks(p_74875_1_, p_74875_3_, 7, 2, 4, 8, 2, 5, Blocks.air, Blocks.air, false); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.cobblestone, 0, 6, 1, 3, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.furnace, 0, 6, 2, 3, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.furnace, 0, 6, 3, 3, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.double_stone_slab, 0, 8, 1, 1, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.glass_pane, 0, 0, 2, 2, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.glass_pane, 0, 0, 2, 4, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.glass_pane, 0, 2, 2, 6, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.glass_pane, 0, 4, 2, 6, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.fence, 0, 2, 1, 4, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.wooden_pressure_plate, 0, 2, 2, 4, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.iron_block, 0, 1, 1, 5, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.stone_stairs, this.getMetadataWithOffset(Blocks.stone_stairs, 3), 2, 1, 5, p_74875_3_); this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.stone_stairs, this.getMetadataWithOffset(Blocks.stone_stairs, 1), 1, 1, 4, p_74875_3_); int i; int j; if (!this.hasMadeChest) { i = this.getYWithOffset(1); j = this.getXWithOffset(5, 5); int k = this.getZWithOffset(5, 5); if (p_74875_3_.isVecInside(j, i, k)) { this.hasMadeChest = true; this.generateStructureChestContents(p_74875_1_, p_74875_3_, p_74875_2_, 5, 1, 5, ChestGenHooks.getItems(VILLAGE_BLACKSMITH, p_74875_2_), ChestGenHooks.getCount(VILLAGE_BLACKSMITH, p_74875_2_)); } } for (i = 6; i = 8; ++i) { if (this.getBlockAtCurrentPosition(p_74875_1_, i, 0, -1, p_74875_3_).getMaterial() == Material.air this.getBlockAtCurrentPosition(p_74875_1_, i, -1, -1, p_74875_3_).getMaterial() != Material.air) { this.placeBlockAtCurrentPosition(p_74875_1_, Blocks.stone_stairs, this.getMetadataWithOffset(Blocks.stone_stairs, 3), i, 0, -1, p_74875_3_); } } for (i = 0; i 7; ++i) { for (j = 0; j 10; ++j) { this.clearCurrentPositionBlocksUpwards(p_74875_1_, j, 6, i, p_74875_3_); this.func_151554_b(p_74875_1_, Blocks.cobblestone, 0, j, -1, i, p_74875_3_); } } this.spawnVillagers(p_74875_1_, p_74875_3_, 7, 1, 1, 1); return true; } //家に生成させる村人のIDを渡す protected int getVillagerType(int p_74888_1_) { return AluminiumMod.metalVillagerID; } //以下 StructureVillagePieces.Village.House2よりコピペ public static AluminiumHouse func_74915_a(StructureVillagePieces.Start p_74915_0_, List p_74915_1_, Random p_74915_2_, int p_74915_3_, int p_74915_4_, int p_74915_5_, int p_74915_6_, int p_74915_7_) { StructureBoundingBox structureboundingbox = StructureBoundingBox.getComponentToAddBoundingBox(p_74915_3_, p_74915_4_, p_74915_5_, 0, 0, 0, 10, 6, 7, p_74915_6_); return canVillageGoDeeper(structureboundingbox) StructureComponent.findIntersecting(p_74915_1_, structureboundingbox) == null ? new AluminiumHouse(p_74915_0_, p_74915_7_, p_74915_2_, structureboundingbox, p_74915_6_) null; } protected void func_143012_a(NBTTagCompound p_143012_1_) { super.func_143012_a(p_143012_1_); p_143012_1_.setBoolean("Chest", this.hasMadeChest); } protected void func_143011_b(NBTTagCompound p_143011_1_) { super.func_143011_b(p_143011_1_); this.hasMadeChest = p_143011_1_.getBoolean("Chest"); } } 解説 VillagerRegistry void registerVillagerId(int id) 村人のIDを登録するメソッド。 コメントにある通り、村人IDは0~4が既存の村人として設定されているため、それ以外の数値を与える必要がある。 競合を防ぐためには、config等で変更できるようにするとよい。 また、IDはいろいろなところで使うためstatic finalな定数に格納すると便利。 void registerVillageTradeHandler(int villagerId, IVillageTradeHandler handler) 指定したIDの村人に特定の交換を登録するメソッド。 なお、すべての村人(MOD追加されたもの含む)に特定の交換を実装するなら、以下のようなコードが効率的。 (VillagerRegistry.instance().registerVillageTradeHandler(metalVillagerID, new AluminiumTrade());の部分を以下のコードに書き換える。) for(Integer integer VillagerRegistry.getRegisteredVillagers()){ VillagerRegistry.instance().registerVillageTradeHandler(integer, new AluminiumTrade()); } void registerVillagerSkin(int villagerId, ResourceLocation villagerSkin) 指定したIDの村人にスキンを追加するメソッド。 void registerVillageCreationHandler(IVillageCreationHandler handler) 村人の家と村人の生成を登録するメソッド。 MapGenStructureIO ワールドへの構造物生成を管理するクラス。 void registerStructure(Class p_143034_0_, String p_143034_1_) void func_143031_a(Class p_143031_0_, String p_143031_1_) どちらも構造物を登録するメソッド。 registerStructureを先に呼ぶ。 MerchantRecipe これを使ったインスタンスをIVillageTradeHandlerを実装したクラスのmanipulateTradesForVillagerで、第二引数recipeListに追加して村人の交換を管理する。 コンストラクター(ItemStack p_i1942_1_, ItemStack p_i1942_2_) 村人の交換を実装するメソッド。第一引数に渡すもの、第二引数に受け取るものを渡す。 下のコンストラクターを用いてnew MerchantRecipe(p_i1942_1_, (ItemStack)null, p_i1942_2_);と記述するのと同じ意味。 コンストラクター(ItemStack p_i1941_1_, ItemStack p_i1941_2_, ItemStack p_i1941_3_) 村人の交換を実装するメソッド。第一引数・第二引数に渡すもの、第三引数に受け取るものを渡す。 StructureComponent StructureVillagePiecesはこのクラスを継承している。 void fillWithBlocks(World worldObj, StructureBoundingBox structBB, int minX, int minY, int minZ, int maxX, int maxY, int maxZ , Block placeBlock, Block replaceBlock, boolean alwaysreplace) x,y,z(structBBで指定された直方体内の相対座標)座標にブロックを敷き詰める。 min**は始点、max**は終点を示している。また、placeBlockは先に設置するブロック、replaceBlockは後に設置するブロック、(基本同じ物を渡す)、alwaysreplaceはreplaceBlockを使用するか否かを それぞれ示している。 コメント この項目に関する質問などをどうぞ。 名前
https://w.atwiki.jp/akasatanahama/pages/27.html
概要 新しい剣・シャベル・斧・ツルハシ・クワや、適正ブロックを自由に設定できるツールを追加する。 ソースコード AluminiumMod.java package tutorial.aluminiummod; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemHoe; import net.minecraft.item.ItemSpade; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; import net.minecraftforge.common.util.EnumHelper; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; @Mod(modid = AluminiumMod.MODID, name = AluminiumMod.MODNAME, version = AluminiumMod.VERSION) public class AluminiumMod { public static final String MODID = "AluminiumMod"; public static final String MODNAME = "Aluminium Mod"; public static final String VERSION = "1.0.0"; public static Item aluminium; public static Item swordAluminium; public static Item shovelAluminium; public static Item pickaxeAluminium; public static Item axeAluminium; public static Item hoeAluminium; public static Item toolAluminium; public static ToolMaterial ALUMINIUM; @EventHandler public void perInit(FMLPreInitializationEvent event) { aluminium = new Item() .setCreativeTab(CreativeTabs.tabMaterials) .setUnlocalizedName("aluminium") .setTextureName("aluminiummod aluminium"); GameRegistry.registerItem(aluminium, "aluminium"); ALUMINIUM = EnumHelper.addToolMaterial("ALUMINIUM", 3, 1000, 7.5F, 2.5F, 10) .setRepairItem(new ItemStack(AluminiumMod.aluminium)); swordAluminium = new ItemSword(ALUMINIUM) .setCreativeTab(CreativeTabs.tabCombat) .setUnlocalizedName("swordAluminium") .setTextureName("aluminiummod aluminium_sword"); GameRegistry.registerItem(swordAluminium, "swordAluminium"); shovelAluminium = new ItemSpade(ALUMINIUM) .setCreativeTab(CreativeTabs.tabTools) .setUnlocalizedName("shovelAluminium") .setTextureName("aluminiummod aluminium_shovel"); GameRegistry.registerItem(shovelAluminium, "shovelAluminium"); pickaxeAluminium = new AluminiumPickaxe(ALUMINIUM) .setCreativeTab(CreativeTabs.tabTools) .setUnlocalizedName("pickaxeAluminium") .setTextureName("aluminiummod aluminium_pickaxe"); GameRegistry.registerItem(pickaxeAluminium, "pickaxeAluminium"); axeAluminium = new AluminiumAxe(ALUMINIUM) .setCreativeTab(CreativeTabs.tabTools) .setUnlocalizedName("axeAluminium") .setTextureName("aluminiummod aluminium_axe"); GameRegistry.registerItem(axeAluminium, "axeAluminium"); hoeAluminium = new ItemHoe(ALUMINIUM) .setCreativeTab(CreativeTabs.tabTools) .setUnlocalizedName("hoeAluminium") .setTextureName("aluminiummod aluminium_hoe"); GameRegistry.registerItem(hoeAluminium, "hoeAluminium"); toolAluminium = new AluminiumTool(ALUMINIUM) .setCreativeTab(CreativeTabs.tabTools) .setUnlocalizedName("toolAluminium") .setTextureName("aluminiummod aluminium_tool"); GameRegistry.registerItem(toolAluminium, "toolAluminium"); } } AluminiumPickaxe.java package tutorial.aluminiummod; import net.minecraft.item.ItemPickaxe; public class AluminiumPickaxe extends ItemPickaxe { public AluminiumPickaxe(ToolMaterial toolMaterial) { super(toolMaterial); } } AluminiumAxe.java package tutorial.aluminiummod; import net.minecraft.item.ItemAxe; public class AluminiumAxe extends ItemAxe { public AluminiumAxe(ToolMaterial toolMaterial) { super(toolMaterial); } } AluminiumTool.java package tutorial.aluminiummod; import java.util.Set; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemTool; import com.google.common.collect.Sets; public class AluminiumTool extends ItemTool { private static final Set canHarvestBlock = Sets.newHashSet(new Block[] { Blocks.diamond_block }); public AluminiumTool(ToolMaterial toolMaterial) { super(0.0F, toolMaterial, canHarvestBlock); } @Override public boolean func_150897_b(Block block) { return true; } @Override public float func_150893_a(ItemStack itemStack, Block block) { if (block.getMaterial() == Material.rock) { return this.efficiencyOnProperMaterial; } return super.func_150893_a(itemStack, block); } // ここにItemHoeのプログラムを張り付ければ、クワの効果も得られる。 } 解説 ToolMaterial ツールの性質を保持するためのenum。 ToolMaterial setRepairItem(ItemStack stack) 金床で修繕するための素材を設定するメソッド。 EnumHelper ToolMaterial addToolMaterial(String name, int harvestLevel, int maxUses, float efficiency, float damage, int enchantability) 新しくツールマテリアルを追加するためのメソッド。 引数は順に、ツールマテリアルの名前・回収レベル・最大耐久値・採掘速度・攻撃に使用したときのダメージ倍率・エンチャントの付きやすさ。 ダイヤモンドは、3, 1561, 8.0F, 3.0F, 10 Item public boolean func_150897_b(Block block) 引数のブロックを回収できるかを返す。 public float func_150893_a(ItemStack itemStack, Block block) 採掘速度を返す。 ItemToolでは、コンストラクタの第3引数のSetに登録されているブロックのときに適性時採掘速度を返している。 使用例 オファレンの万能ツールを追加している部分 +オファレンMOD OfalenModCore.java package nahama.ofalenmod; /*略*/ /** @author Akasata Nahama */ @Mod(modid = OfalenModCore.MODID, name = OfalenModCore.MODNAME, version = OfalenModCore.VERSION) public class OfalenModCore { public static final String MODID = "OfalenMod"; public static final String MODNAME = "Ofalen Mod"; public static final String VERSION = "[1.7.10]1.0.0"; /*略*/ /** 最初に行われる処理。アイテム・ブロックの追加などを行う */ @EventHandler public void preInit(FMLPreInitializationEvent event) { /*略*/ // アイテムを設定するメソッドを実行 OfalenModItemCore.registerItem(); /*略*/ } /*略*/ } OfalenModItemCore.java package nahama.ofalenmod.core; /*略*/ public class OfalenModItemCore { /*略*/ public static Item toolPerfectOfalen; /*略*/ /**アイテムを設定する*/ public static void registerItem () { /*略*/ toolPerfectOfalen = new OfalenPerfectTool(OfalenModMaterialCore.PERFECTT) .setUnlocalizedName("toolPerfectOfalen") .setTextureName("ofalenmod ofalen_perfect_tool"); GameRegistry.registerItem(toolPerfectOfalen, "toolPerfectOfalen"); /*略*/ } } OfalenPerfectTool.java package nahama.ofalenmod.item.tool; import nahama.ofalenmod.OfalenModCore; import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.EnumAction; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemTool; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.UseHoeEvent; import cpw.mods.fml.common.eventhandler.Event.Result; public class OfalenPerfectTool extends ItemTool { public OfalenPerfectTool(ToolMaterial material) { super(0.0F, material, null); this.setCreativeTab(OfalenModCore.tabOfalen); } @Override public boolean func_150897_b(Block block) { return true; } /**採掘速度の設定*/ @Override public float func_150893_a(ItemStack itemStack, Block block) { //他のツールでは適正ブロックの判定をするが、ここではすべてに適正採掘速度を適用する return this.efficiencyOnProperMaterial; } //クワの処理 /**アイテムが使われた(右クリック)時の処理*/ @Override public boolean onItemUse(ItemStack itemStack, EntityPlayer entityPlayer, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { //プレイヤーが編集不可ならば if (!entityPlayer.canPlayerEdit(x, y, z, side, itemStack)) { //falseを返す return false; } else { //eventの登録 UseHoeEvent event = new UseHoeEvent(entityPlayer, itemStack, world, x, y, z); if (MinecraftForge.EVENT_BUS.post(event)) { return false; } if (event.getResult() == Result.ALLOW) { //ダメージを与える itemStack.damageItem(1, entityPlayer); return true; } //右クリックされたブロックを取得する Block block = world.getBlock(x, y, z); //右クリックされたブロックの上が空気ブロックで、右クリックされたブロックが草ブロックか土ブロックならば if (side != 0 world.getBlock(x, y + 1, z).isAir(world, x, y + 1, z) (block == Blocks.grass || block == Blocks.dirt)) { Block block1 = Blocks.farmland; //音を鳴らす world.playSoundEffect((double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float)z + 0.5F), block1.stepSound.getStepResourcePath(), (block1.stepSound.getVolume() + 1.0F) / 2.0F, block1.stepSound.getPitch() * 0.8F); //クライアント側では何もせず if (world.isRemote) { return true; //サーバー側では } else { //ブロックを置き換えて world.setBlock(x, y, z, block1); //ダメージを与える itemStack.damageItem(1, entityPlayer); return true; } } else { return false; } } } //剣の処理 /**Entityを叩いたときの処理。ItemToolでは2のダメージをアイテムに与えるが、剣と同じように1与えるようにする。*/ @Override public boolean hitEntity(ItemStack itemStack, EntityLivingBase target, EntityLivingBase player) { itemStack.damageItem(1, player); return true; } @Override public EnumAction getItemUseAction(ItemStack itemStack) { return EnumAction.block; } @Override public int getMaxItemUseDuration(ItemStack itemStack) { return 72000; } @Override public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) { player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); return itemStack; } } Tips ここで、実装したツールに常時エンチャントを追加する方法を紹介する。 コードは、匠Craftの匠式ツールや対地雷ツールを参考にしていただきたい。 Itemをオーバーライドしたクラスに、以下のメソッドを追加する。 //アイテムに対して毎ティック呼ばれるメソッド。 //引数は、itemStack(アイテムと個数、メタデータ等をまとめたもの),world(ワールド),entity(持っているEntity),slot(現在あるスロット番号),isHeld(手持ちかどうか) public void onUpdate(ItemStack itemStack, World world, Entity entity, int slot, boolean isHeld) { //エンチャントされていないかどうかを確認する。 if (itemStack.isItemEnchanted() == false) { //エンチャントを付与する。引数はエンチャント,レベルの順に追加する。 itemStack.addEnchantment(TEnchantment.enchantmentMS, 1); } } これにより、常時効果を発揮するエンチャントや手に持ってるときに効果を発揮するものなどを実装できる。 コメント この項目に関する質問などをどうぞ。 アルミニウムツールが耐久値を保持しないのですが、、 - 名無しさん 2015-08-22 17 58 35 まだ編集が終わっていません。原因を調べ、テンプレートを使用して修正します。報告ありがとうございます - 赤砂蛇凪浜 2015-08-23 08 51 21 編集完了しましたが、こちらの環境では特に問題はありませんでした。解決できていない場合はもう一度コメントしてくださるとありがたいです。 - 赤砂蛇凪浜 2015-09-04 09 17 25 質問です。黄昏の森のstealeafでできるツールのようにもともとエンチャントがつくツールはどのようなコードにすればいいのでしょうか? - 名無しさん 2017-01-07 16 19 06 解決しました。 - 名無しさん 2017-01-22 10 08 12 方法を教えていただけませんか? - あるふぁ 2017-05-20 16 26 48 匠craftの「地雷除去」のように、新しいエンチャントをつける方法を解説していただけると助かります。 - あるふぁ 2017-05-20 18 53 49 追加いたしました、ご確認ください。 - Tom Kate 2017-05-22 19 34 58 すみません、伝わりにくかったと思います…匠craftの「地雷除去」のように、新しいエンチャントの”種類”を作る方法でした。 - あるふぁ 2017-05-23 20 15 17 エンチャント「追加」ですか。申し訳ありません。追加予定はありますがすぐにはできないと思いますのでご了承ください。 - Tom Kate 2017-05-23 20 26 53 どんなブロックでもクリエイティブの時のように即時破壊し、ドロップさせるツールは作れますか? - あるふぁ 2017-05-31 19 29 48 通常破壊可能なブロックを採掘したいのであれば、比較的容易に作れます。AluminiumTool.javaでの実装を応用し、func_150893_aで常にefficiencyOnProperMaterialを返せば、通常破壊可能なすべてのブロックを、適正採掘速度で破壊できます。さらに、EnumHelper.addToolMaterialの第四引数に大きな値を渡すことで、クリエイティブ以上の採掘速度を出すことが可能です。(1500以上であれば、通常時は黒曜石を最大速度で破壊できます。)岩盤のような破壊不可ブロックは、干渉できるイベントが見当たらないため、左クリック時に破壊することは簡単ではないと思います。アイテム使用時に呼ばれるonItemUseメソッドをオーバーライドすれば、右クリック時に岩盤を破壊し、ドロップさせるといった処理は可能です。 - 赤砂蛇凪浜 2017-06-01 17 50 09 ありがとうございます!実は返信が来る前に試行錯誤して解決してしまったのですが、参考になりました。 - あるふぁ 2017-06-01 18 38 38 こちらも「防具の追加」同様に、金床で修理することが出来ません。 - mod初心者 2017-06-17 12 48 38 ご指摘ありがとうございます。原因は「防具の追加」と同様です。修正しておきました。 - 赤砂蛇凪浜 2017-06-17 16 52 20 解決しました!ありがとうございました! - mod初心者 2017-06-19 17 19 34 参考になりました、ありがとうございます - 名無しさん 2017-08-04 19 14 19 名前
https://w.atwiki.jp/gtamod2/pages/15.html
個別の項目が無いSkinModはここに登録して下さい 画像はアップロードページ UNDERTALE F キャラ名:Friskタイトル:Frisk作者:NONOJI出演作品:UNDERTALE備考:URL C キャラ名:Charaタイトル:Chara作者:NONOJI出演作品:UNDERTALE備考:URL 表の整形のための文字です表の整形のための文字です ガールズ&パンツァー あ キャラ名:あんこうチームタイトル:あんこうチームskin作者:良珈琲出演作品:ガールズ&パンツァー備考:あんこうチーム5人セット元モデル:とらはぜ、yon oji(J)※現在はβ版で一部不具合ありURL 表の整形のための文字です表の整形のための文字です けいおん! け キャラ名:軽音楽部5人セットタイトル:K-on! Mod作者:BAHEK92出演作品:けいおん!備考:画像下のk-on.rarをクリックでダウンロード可平沢唯、秋山澪、田井中律、琴吹紬、中野梓のセットURLミラー 表の整形のための文字です表の整形のための文字です 侵略!イカ娘 い キャラ名:イカ娘タイトル:イカ娘作者:M.M出演作品:侵略!イカ娘備考:URL い キャラ名:イカ娘タイトル:イカ娘作者:Ds/sagena出演作品:侵略!イカ娘備考:URL 表の整形のための文字です表の整形のための文字です す キャラ名:すーぱーそに子タイトル:Sonico作者:不明出演作品:NITRO SUPER SONIC備考:おそらく中華製URL 表の整形のための文字です表の整形のための文字です ゼルダの伝説 が キャラ名:ガノンドロフタイトル:Ganondorf from Zelda Twilight Princess作者:yuniwii出演作品:ゼルダの伝説シリーズ備考:海外サイト、コンバートURL ぜ キャラ名:ゼルダタイトル:Zelda作者:yuniwii出演作品:ゼルダの伝説シリーズ備考:海外サイト、コンバートURL り キャラ名:リンクタイトル:Link with Master Sword作者:yuniwii出演作品:ゼルダの伝説シリーズ備考:海外サイト、マスターソードも付属。コンバートURL 表の整形のための文字です表の整形のための文字です ゼロから始める魔法の書 け キャラ名:獣の傭兵タイトル:獣の傭兵作者:NONOJI出演作品:ゼロから始める魔法の書備考:元モデル作成:獅子狼虎服装差分ありURL 表の整形のための文字です表の整形のための文字です 天元突破グレンラガン よ キャラ名:ヨーコ・リットナータイトル:いろいろ作者:長門の人出演作品:天元突破グレンラガン備考:着せ替え可 コンバートURL 表の整形のための文字です表の整形のための文字です ドラゴンボール そ キャラ名:孫悟空タイトル:Songoku by Shady-D作者:yuniwii出演作品:ドラゴンボール備考:コンバートURL ぶ キャラ名:ブルマタイトル:bulma作者:gosuke出演作品:ドラゴンボール備考:コンバートURL べ キャラ名:べジータタイトル:Vegeta by Commando Funebrero作者:yuniwii出演作品:ドラゴンボール備考:コンバートURL 表の整形のための文字です表の整形のための文字です 家有大猫/Nekojishi り キャラ名:李克勞タイトル:雲豹/李克勞(Likulau)作者:NONOJI出演作品:家有大猫/Nekojishi備考:元モデル作成:獅子狼虎服装差分ありURL 表の整形のための文字です表の整形のための文字です ぱにぽに す キャラ名:鈴木さやかタイトル:6号さん作者:ハイヌ出演作品:ぱにぽに備考:公開停止により入手不可2013年2月18日以降に制作された改造モデルの再配布禁止2013年9月1日以降はGTA関連動画での利用禁止 表の整形のための文字です表の整形のための文字です ひぐらしのなく頃に ま キャラ名:前原 圭一タイトル:圭一作者:ハイヌ出演作品:ひぐらしのなく頃に備考:公開停止により入手不可2013年2月18日以降に制作された改造モデルの再配布禁止2013年9月1日以降はGTA関連動画での利用禁止 り キャラ名:竜宮 レナタイトル:レナ作者:ハイヌ出演作品:ひぐらしのなく頃に備考:公開停止により入手不可2013年2月18日以降に制作された改造モデルの再配布禁止2013年9月1日以降はGTA関連動画での利用禁止 表の整形のための文字です表の整形のための文字です Fate/stay night せ キャラ名:セイバータイトル:白いの作者:長門の人出演作品:Fate/stay night備考:セイバー・リリィ着せ替え可 コンバートURL と キャラ名:遠坂凛タイトル:赤いの作者:長門の人出演作品:Fate/stay night備考:着せ替え可 コンバートURL 表の整形のための文字です表の整形のための文字です ポケモン さ キャラ名:サトシタイトル:シベ.鉄さん詰め合わせ3作者:シベ.鉄出演作品:ポケモン備考:GSSさんが代理配布URLTOP → GIFT は キャラ名:ハピナスタイトル:ハピナス作者:Ds/sagena出演作品:ポケモン備考:URL は キャラ名:ハルカタイトル:小袋怪物使役者的dff作者:ハイヌ出演作品:ポケモン備考:公開停止により入手不可2013年2月18日以降に制作された改造モデルの再配布禁止2013年9月1日以降はGTA関連動画での利用禁止 ぴ キャラ名:ピカチュウタイトル:シベ.鉄さんのキャラ詰め合わせ作者:シベ.鉄出演作品:ポケモン備考:GSSさんが代理配布URLTOP → GIFT ぽ キャラ名:ポケモン御三家&イーブイ族タイトル:ポケットモンスターTactics作者:虹スレ6,278氏ほか出演作品:ポケモン備考:ハイヌさんが代理配布公開停止により入手不可 表の整形のための文字です表の整形のための文字です ローゼンメイデン す キャラ名:水銀燈タイトル:銀様PMD作者:Regalia出演作品:ローゼンメイデン備考:URL か キャラ名:金糸雀タイトル:金糸雀作者:長門の人出演作品:ローゼンメイデン備考:URL す キャラ名:翠星石タイトル:翠星石作者:長門の人出演作品:ローゼンメイデン備考:URL し キャラ名:真紅タイトル:真紅作者:長門の人出演作品:ローゼンメイデン備考:URL 表の整形のための文字です表の整形のための文字です
https://w.atwiki.jp/openvswitch/pages/14.html
Open vSwitchのインストールと設定方法 Open vSwtichのインストール QoS ポートミラーリング **工事中** OpenFlowコントローラ接続 **工事中**
https://w.atwiki.jp/ulilith-face/pages/5.html
このサイトについて このWikiサイトは、「 Project9k 」さんで配布されている Windows用サウンドプレイヤーソフト、 Sound Player Lilith for Unicode OSs(uLilith)のフェイス(スキンファイル)の 基本的な作り方をまとめたサイトです。 このサイトのフェイス作成法解説の内容は、 uLilithのインストールフォルダのDocフォルダ内に添付されている 「フェイス定義仕様書.txt」 「フェイスコマンド仕様書.txt」 及び、SDKフォルダ内のサンプルプラグインのReadMe.txtの内容を元にしています。 なお、このwikiではフェイス作成の基本的な部分については説明していますが 上記の仕様書の内容全てをカバーしているわけではないのでご了承ください。 特にコマンド関係は、基本的な設定方法は説明してはいますが 各コマンド個別の設定方法の詳細など、 ここで説明していない部分が多いので 必要に応じて上記の仕様書を参照してください。 各章について 基礎知識編 uLilithフェイスの定義ファイルの記述のしかたや仕組みなど 主に、uLilithフェイスのフェイス定義に関する基本的な情報についてまとめてあります。 フェイス作成基礎編 フェイスの基本設定や各フェイスアイテムの配置方法など 基本的なフェイスの作り方についてまとめてあります。 フェイス作成応用編 サブウィンドウの利用や、サイズ変更可能なフェイスの作成、 コマンドによるフェイス全体やフェイスアイテムの設定変更などを利用した 複雑な機能を備えたフェイスの作り方をまとめてあります。 その他 その他、資料など 「各フィールドに設定可能なキー一覧」と、 wiki内の各キーの設定一覧表・画像による説明図をまとめたページを作成しました。 対応バージョン uLilithの開発版バージョン「Ver.1.0 pre-Beta.4(2011/11/27)」以降の フェイス仕様を解説しています。 これ以前の日付の開発版、及び安定版「Ver.1.0 Beta.3」での仕様とは 異なる部分があるのでご注意ください。 (2016/08/24更新) 現在、uLilith Ver.1.0 pre-Beta.4(2016/08/22)版までに 追加されたコマンド・キーなどについて各解説ページに追加してあります。 このサイトに関するご連絡・お問い合わせについて このWikiサイトはプレイヤー配布元とは別の、非公式なサイトです。 解説についてのご質問、表記や記述内容の間違いがあった場合など このサイトのページ内容についてのご質問やご意見は ページ編集・管理者の静荷(連絡先はこちらです)へお願いします。
https://w.atwiki.jp/akasatanahama/pages/21.html
概要 何の機能もない基本的なブロックを追加する。 ソースコード AluminiumMod.java package tutorial.aluminiummod; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; @Mod(modid = "AluminiumMod", name = "Aluminium Mod", version = "1.0.0") public class AluminiumMod { public static Item aluminium; //追加するブロックの宣言 public static Block blockAluminium; @EventHandler public void perInit(FMLPreInitializationEvent event) { aluminium = new Item() .setCreativeTab(CreativeTabs.tabMaterials) .setUnlocalizedName("aluminium") .setTextureName("aluminiummod aluminium"); GameRegistry.registerItem(aluminium, "aluminium"); //Blockを継承したクラスのインスタンスを生成し、代入する。 blockAluminium = new AluminiumBlock(Material.rock) //システム名の登録 .setBlockName("blockAluminium") //テクスチャ名の登録 .setBlockTextureName("aluminiummod aluminium_block"); //GameRegistryへの登録 GameRegistry.registerBlock(blockAluminium, "blockAluminium"); } } AluminiumBlock.java package tutorial.aluminiummod; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; public class AluminiumBlock extends Block { public AluminiumBlock(Material material) { super(material); //クリエイティブタブの登録 this.setCreativeTab(CreativeTabs.tabBlock); //硬さの設定 this.setHardness(5.0F); //爆破耐性の設定 this.setResistance(10.0F); //ブロックの上を歩いた時の音を登録する。 this.setStepSound(Block.soundTypeMetal); //回収するのに必要なツールを設定する。 this.setHarvestLevel("pickaxe", 2); //明るさの設定 this.setLightLevel(0.0F); } } 解説 Block minecraftのブロックはすべてこのクラスを継承している。 modで追加するブロックもこのクラスを継承することになる。 コンストラクタ(Material material) そのブロックのマテリアルを設定する。 Materialにまとめれているので確認されたし。 Block setBlockName(String name) ブロックのシステム名を登録するメソッド。 Block setBlockTextureName(String name) ブロックのテクスチャを登録するメソッド。 アイテムと同様。 Block setCreativeTab(CreativeTabs tab) ブロックをクリエイティブタブに登録するメソッド。 アイテムと同様。 Block setHardness(float hardness) ブロックの硬さを設定する。 数値を上げると硬くなる。 黒曜石は50.0F。金・ラピスラズリ以外の圧縮ブロックが5.0F。net.minecraft.block.Blockを参照。 Block setResistance(float resistance) ブロックの爆破耐性を設定する。 数値を上げると耐えられる爆発力が高くなる。 黒曜石は2000.0F。圧縮ブロックは10.0F。こちらもnet.minecraft.block.Blockを参照。 Block setStepSound(StepSound sound) ブロックの上を歩いたり、破壊したりしたときになる音の種類を設定する。 void setHarvestLevel(String type, int level) typeで適正ツールの種類を指定、levelでレベルを指定する。 レベルは高いほど要求するツールが強力なものになる。 Block setLightLevel(float level) ブロックの光度を設定する。 ここで渡した値に15をかけたものが光源レベルになる。 0.0~1.0以外は無効。 GameRegistry Block registerBlock(Block block, String name) GameRegistryに追加ブロックを登録するメソッド。 使用例 オファレンブロックを追加する部分。 メタデータなどを使っている箇所は省略した。 +オファレンMOD OfalenModCore.java package nahama.ofalenmod; /*略*/ /**@author Akasata Nahama*/ @Mod(modid = OfalenModCore.MODID, name = OfalenModCore.MODNAME, version = OfalenModCore.VERSION) public class OfalenModCore { public static final String MODID = "OfalenMod"; public static final String MODNAME = "Ofalen Mod"; public static final String VERSION = "[1.7.10]1.0.0"; /*略*/ /**最初に行われる処理。アイテム・ブロックの追加などを行う*/ @EventHandler public void preInit(FMLPreInitializationEvent event) { /*略*/ //ブロックを設定するメソッドを実行 OfalenModBlockCore.registerBlock(); /*略*/ } /*略*/ } OfalenModBlockCore.java package nahama.ofalenmod.core; /*略*/ public class OfalenModBlockCore { /*略*/ public static Block blockOfalen; /*略*/ /**ブロックを設定する*/ public static void registerBlock () { /*略*/ blockOfalen = new OfalenBlock() .setBlockName("blockOfalen") .setBlockTextureName("ofalenmod ofalen_block-"); GameRegistry.registerBlock(blockOfalen, ItemOfalenBlock.class, "blockOfalen"); /*略*/ } } OfalenBlock.java package nahama.ofalenmod.block; /*略*/ public class OfalenBlock extends Block { /*略*/ public OfalenBlock() { super(Material.rock); this.setCreativeTab(OfalenModCore.tabOfalen); this.setHardness(7.5F); this.setResistance(15.0F); this.setStepSound(Block.soundTypeMetal); this.setLightLevel(1.0F); this.setHarvestLevel("pickaxe", 3); } /*略*/ } このままテストプレイをしてみると、テクスチャがない状態ではピンクと黒のデフォルトテクスチャになってしまう。 また、名前も、tile.blockAluminium.nameとなる。 これらの解決方法は次回。 コメント この項目に関する質問などをどうぞ。 アルミニウムモッドの時のブロック作成法はないのですか。 - # 2015-07-04 14 49 30 (7月2日までのこのページのソースコードがみたいです。) - # 2015-07-04 14 51 54 ご意見ありがとうございます。現在修正、もしくは併記予定です。 - Tom Kate 2015-07-05 12 22 45 併記する形で修正いたしました。 - Tom Kate 2015-07-05 13 27 24 とても見やすくなってよかったです。ありがとうございます。 - # 2015-07-05 14 46 28 ブロックの面によってテクスチャを変えるにはどうしたらよいのでしょうか - 名無しさん 2015-07-05 20 20 18 ご意見ありがとうございます。使えるメソッドのgetIcon と registerBlockIconsに追記いたしました。 - Tom Kate 2015-07-06 19 56 48 一時的に削除します。「メタデータを持つブロックの追加」で触れるよう修正する予定です。 - 赤砂蛇凪浜 2015-07-10 21 12 56 遅くなりましたが、修正が完了しました。 - 赤砂蛇凪浜 2015-07-23 12 35 35 申し訳ありません blockAluminium = new AluminiumBlock(Material.rock) の部分でなぜかいつもAluminiumBlockのところにエラーが付きますどうすればよいでしょうか?丸コピペしたソースコードを使ってもそうなります - 名無しさん 2015-09-19 15 28 50 クラッシュレポートをクラウドサービスか何かにおいていただいて、urlを送っていただくことはできますか? - Tom Kate 2015-09-19 15 59 11 クラッシュレポートを見せていただければ、こちらで対応いたします。 - Tom Kate 2015-09-19 15 59 49 net.minecraft.block.Blockを参照 と書かれているのですが、どうやって参照するのですか? - 名無しさん 2015-11-01 17 26 38 AluminiumBlock.javaをeclipse上で開き、...extends Block {...のBlockにカーソルを合わせてF3を押せば、Block.classを表示することができます。Blockにはバニラのブロックを追加している部分があるので、そこを見れば、バニラのブロックがどういう設定をされているかを知ることができます。 - 赤砂蛇凪浜 2015-11-04 19 23 57 ブロックを複数追加し、クリエイティブタブも参考にさせていただき作成できました。ですが、ブロック1、ブロック2と数を増やしていくとタブ内での並び順がバラバラになってしまいます。この場合どうすればよいのでしょうか? - 名無しさん 2016-03-05 20 30 20 forge側の不具合で、既存のワールドのクリエイティブタブにアイテム・ブロックを追加すると順序がばらばらになってしまいます。新しくワールドを作り直すと正しい順で表示されると思います。お試しください。 - 赤砂蛇凪浜 2016-03-06 09 15 21 返信ありがとうございます。ワールドを再生成しましたが直りませんでした。。何か設定し忘れているのでしょうか……。ブロックの並び順はブロックIDで決められているのですよね? - 名無しさん 2016-03-07 19 11 47 はい。ブロックIDはMOD側から指定することができないため、基本的にGameRegistryに登録した順ですね。 - 赤砂蛇凪浜 2016-03-07 20 38 17 多分、そこが自分は理解できてないと思うんです。登録順を並べるにはどうすればいいのでしょう?また、registerBlock(X, "Y");このXとYはどういう値にすればうまく並べれるのでしょうか。今は - 名無しさん 2016-03-07 21 40 26 (○○1, "1")、(○○2, "2")という感じになっています - 名無しさん 2016-03-07 21 41 41 おそらく、GameRegistry.registerBlockを呼び出した順だと思われます。 - 赤砂蛇凪浜 2016-03-08 21 37 25 呼び出し順を変える方法を教えて頂きたいです! - 名無しさん 2016-03-09 23 14 39 コード内で記述する順を変えるだけです。 - 赤砂蛇凪浜 2016-03-10 19 21 04 記述する順番はしっかりならべてるんだけどなぁ・・・。どうしても解決できません。。。メタブロックの追加だとうまく表示できたのでそちらに切り替えることにします。初心者に丁寧に教えていただいてありがとうございました!(涙) - 名無しさん 2016-03-13 20 55 45 基本的にできないことはわかっていることを前提として置いて質問します。何か裏技的な形でブロックid - anatawa12 2016-12-16 01 01 27 続き 裏技的な形でブロックidを指定することはできませんか? - anatawa12 2016-12-16 01 03 10 私達も試したことがないためはっきりとしたことは言えません。すみません。以下は軽く調べてみた結果で、間違っている可能性がありますので、ご了承ください。Forgeのシステムに入り込む形で指定することは可能かもしれませんが、簡単ではないと思います。Forgeのブロック追加処理は、GameRegistryからGameData、FMLControlledNamespacedRegistryを経由して行っているようです。ブロックIDは、GameDataやFMLControlledNamespacedRegistryでItem IDとの対応を見ながら決定しているようです。GameData.getMain()がprotectedに指定されているため、代替メソッドを作ろうとしたらそこで詰まりました。 - 赤砂蛇凪浜 2016-12-17 18 26 34 返信ありがとうございます やっぱり難しいですよね 1.7にはたを1.8のidで追加するmodを作ろうと思ったのですが、、 - anatawa12 2016-12-22 15 51 48 質問です。レッドストーンブロックのようにブロックをレッドストーン動力源にするにはどうすればいいのでしょうか? - 名無しさん 2017-01-07 16 00 06 レッドストーンブロックのクラスであるBlockCompressedPoweredを見るとわかると思いますが、以下のようにすればよいです。canProvidePowerをオーバーライドし、常にtrueを返す。isProvidingWeakPowerをオーバーライドし、常に15を返す。 - 赤砂蛇凪浜 2017-01-10 16 06 40 解決しました!! もうひとつ質問なんですけどブロックが光を透過するようにするにはどうすればいいのでしょう。 - 名無しさん 2017-01-11 20 39 31 こっちも解決しました!! .setLightOpacityというメソッドを使いました。 - 名無しさん 2017-01-14 15 12 24 このブロックを階段にするにはどうすればいいですか? - 名無しさん 2017-02-04 16 05 17 返信が遅くなってしまい申し訳ありません。今後チュートリアルを作成する予定です。また、単純な階段ならば、BlockStairsのインスタンスを生成することで実装できます。以下、そのサンプルです。perInitに追記すれば動作します。stairsAluminium = new BlockStairs(blockAluminium, 0).setBlockName("stairsAluminium").setBlockTextureName("aluminiummod aluminium_block");stairsAluminium.setCreativeTab(CreativeTabs.tabBlock);stairsAluminium.setHarvestLevel("pickaxe", 2);stairsAluminium.useNeighborBrightness = true;GameRegistry.registerBlock(stairsAluminium, "stairsAluminium"); - 赤砂蛇凪浜 2017-02-23 17 46 40 名前
https://w.atwiki.jp/akasatanahama/pages/129.html
mcmod.infoを利用するのをやめて、この方法に移行しました。 - 飽き性 2016-12-29 23 16 55 すみません、上は誤爆です。 続きから書きます。しかしいざgradlew buildをしてmodsに入れてもZip file ExapleMod-1.0.jar failed to read properly, it will be ignoredと出て読み込まれません。どのようにすると読み込まれるのでしょうか、教えてくださると助かります。必要ならpastebinなどでソースも公開します - 飽き性 2016-12-29 23 21 22 原因として考えられるもののとして、@Modアノテーションの記述が間違っている、もしくはModInfo.loadInfo(meta);を忘れているというものが考えられます。二つに当てはまらない場合は、お手数ですが返信下さい。 - Tom Kate 2016-12-30 18 08 02 ModInfoのURL等の少し省略していたものを追加したりなどしましたが、今までと同様のメッセージが表示され読み込まれませんでした。 - 飽き性 2016-12-30 21 38 43 ワークスペースを作り直してみると解決しました。返信ありがとうございました! - 飽き性 2017-01-06 11 31 48